Network devices such as routers, switches and optical devices are becoming increasingly more complicated. Typical network devices now require thousands of lines of specialized configuration instructions to operate properly. Unlike most software applications, the instructions that operate network devices can be changed on a frequent basis, and the nature of network devices often requires that each version of a device's configuration be stored. Because changes are so frequent, sizable repositories of old configurations are generated for each device. When these sizable repositories are accumulated across the thousands of network devices that frequently make up a network, cumbersome, inefficient repositories are created. In some cases, these repositories are so large that they are not useful.
Present network architecture generally requires that configuration instructions and the capabilities of a network device (referred to as “configuration knowledge”) be stored together as an atomic unit. This single-data-model approach has proven difficult to maintain for sophisticated networks. When network administrators, for example, archive only the configuration data—the actual configuration instructions or some indication thereof—the configuration knowledge that was used to generate those configuration instructions is lost. When the network administrators attempt to archive both the configuration instructions and the configuration knowledge for each configuration change, the size of the archived file becomes too large because the knowledge used to generate the configuration is many times the size of the actual configuration.
For a given version of a network device, the configuration knowledge is generally invariant, e.g., the operating system and hardware for the network device do not change. Thus, repeatedly archiving the configuration knowledge is wasteful.
Network administrators have also found that the single-data-model implementation makes reverting to previous configurations difficult. When the configuration data and the configuration knowledge are bundled together as an atomic unit, network administrators have significant difficulty in reverting to a previous device configuration when both the configuration instructions and the configuration knowledge change. For example, when a network device is upgraded to run a new version of its operating system, both the configuration knowledge and the configuration data are changed. If the upgrade fails, rolling back the changes to a known state for the previous operating system.
Present network technology suffers from yet another drawback in that it lacks a common information model that can be used to derive each of the application-specific configurations. This lack results in network applications having difficulty in retrieving and sharing network information from different network devices. Even more problematic is the fact that the lack of the common information model results in network applications sharing network data infrequently. For example, each application might implement its own procedure for discovery of network devices because it cannot understand information generated by another network application.